// samsting : this file is auto create.

#ifndef ALIYUN_Ecs_DescribeDisksResponse_H_
#define ALIYUN_Ecs_DescribeDisksResponse_H_

#include "core/acs_response.h"

namespace aliyun { namespace Ecs {

class DescribeDisksResponse : public AcsResponse {
public:
  DescribeDisksResponse();

  class Disk {
    friend class DescribeDisksResponse;
  public:

    class OperationLock {
      friend class DescribeDisksResponse;
      friend class Disk;
    public:
      const string& GetLockReason(void) const;
    private:
      string LockReason_;
    }; // OperationLock 


    class Tag {
      friend class DescribeDisksResponse;
      friend class Disk;
    public:
      const string& GetTagKey(void) const;
      const string& GetTagValue(void) const;
    private:
      string TagKey_;
      string TagValue_;
    }; // Tag 

    const std::vector<OperationLock>& GetOperationLocks(void) const;
    const std::vector<Tag>& GetTags(void) const;
    const string& GetDiskId(void) const;
    const string& GetRegionId(void) const;
    const string& GetZoneId(void) const;
    const string& GetDiskName(void) const;
    const string& GetDescription(void) const;
    const string& GetType(void) const;
    const string& GetCategory(void) const;
    int  GetSize(void) const;
    const string& GetImageId(void) const;
    const string& GetSourceSnapshotId(void) const;
    const string& GetProductCode(void) const;
    bool GetPortable(void) const;
    const string& GetStatus(void) const;
    const string& GetInstanceId(void) const;
    const string& GetDevice(void) const;
    bool GetDeleteWithInstance(void) const;
    bool GetDeleteAutoSnapshot(void) const;
    bool GetEnableAutoSnapshot(void) const;
    const string& GetCreationTime(void) const;
    const string& GetAttachedTime(void) const;
    const string& GetDetachedTime(void) const;
    const string& GetDiskChargeType(void) const;
    const string& GetExpiredTime(void) const;
  private:
    std::vector<OperationLock> OperationLocks_;
    std::vector<Tag> Tags_;
    string DiskId_;
    string RegionId_;
    string ZoneId_;
    string DiskName_;
    string Description_;
    string Type_;
    string Category_;
    int    Size_;
    string ImageId_;
    string SourceSnapshotId_;
    string ProductCode_;
    bool   Portable_;
    string Status_;
    string InstanceId_;
    string Device_;
    bool   DeleteWithInstance_;
    bool   DeleteAutoSnapshot_;
    bool   EnableAutoSnapshot_;
    string CreationTime_;
    string AttachedTime_;
    string DetachedTime_;
    string DiskChargeType_;
    string ExpiredTime_;
  }; // Disk 

  const std::vector<Disk>& GetDisks(void) const;
  int  GetTotalCount(void) const;
  int  GetPageNumber(void) const;
  int  GetPageSize(void) const;

private:
  std::vector<Disk> Disks_;
  int    TotalCount_;
  int    PageNumber_;
  int    PageSize_;

protected:
  const char* BaseKey(void);
  void         UnmarshallerMap(std::map<string, string>& response_map);

};

} } // namespace aliyun { namespace Ecs {

#endif // #ifndef ALIYUN_Ecs_DescribeDisksResponse_H_

// end of file 
